home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 3: Developer Tools / Linux Cubed Series 3 - Developer Tools.iso / utils / disk-man / mtools-3.000 / mtools-3 / mtools-3.0 / mcd.c < prev    next >
Encoding:
C/C++ Source or Header  |  1996-05-08  |  1.1 KB  |  56 lines

  1. /*
  2.  * mcd.c: Change MSDOS directories
  3.  */
  4.  
  5. #include "sysincludes.h"
  6. #include "msdos.h"
  7. #include "streamcache.h"
  8. #include "mtools.h"
  9.  
  10. void mcd(int argc, char **argv, int type)
  11. {
  12.     Stream_t *Dir, *SubDir, *Fs;
  13.     FILE *fp;
  14.     char pathname[MAX_PATH], filename[VBUFSIZE];
  15.     struct StreamCache_t sc;
  16.  
  17.     if (argc > 2) {
  18.         fprintf(stderr, "Mtools version %s, dated %s\n", mversion, mdate);
  19.         fprintf(stderr, "Usage: %s: [-V] msdosdirectory\n", argv[0]);
  20.         cleanup_and_exit(1);
  21.     }
  22.  
  23.     init_sc(&sc);
  24.     if (argc == 1) {
  25.         printf("%s\n", sc.mcwd);
  26.         cleanup_and_exit(0);
  27.     }
  28.     sc.pathname = pathname;
  29.     Dir = open_subdir(&sc, argv[1], O_RDONLY, &Fs);
  30.     if(!Dir){
  31.         fprintf(stderr,"No such directory\n");
  32.         cleanup_and_exit(1);
  33.     }
  34.  
  35.     SubDir = descend(Dir, Fs, sc.filename, 0, filename);
  36.     if(!SubDir){
  37.         fprintf(stderr,"No such directory\n");
  38.         cleanup_and_exit(1);
  39.     }
  40.     if(strlen(pathname) > 1)
  41.         strcat(pathname,"/");
  42.     strcat(pathname, filename);
  43.  
  44.     FREE(&Dir);
  45.     FREE(&SubDir);
  46.     finish_sc(&sc);
  47.  
  48.     if (!(fp = open_mcwd("w"))){
  49.         fprintf(stderr,"%s: Can't open mcwd file for write\n",argv[0]);
  50.         cleanup_and_exit(1);
  51.     }
  52.     fprintf(fp, "%c:%s\n", sc.drivename, pathname);
  53.     fclose(fp);
  54.     cleanup_and_exit(0);
  55. }
  56.